{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "d15d8294-3328-4e07-ad16-8a03e9bbfdb9",
   "metadata": {},
   "source": [
    "# TAREA DE EJERCICIO\n",
    "\n",
    "Actualiza el proyecto del día 1 para resumir una página web y utilizar un modelo de código abierto que se ejecute localmente a través de Ollama en lugar de OpenAI\n",
    "\n",
    "Podrás utilizar esta técnica para todos los proyectos posteriores si prefiere no utilizar API de pago (closed source).\n",
    "\n",
    "**Beneficios:**\n",
    "1. Sin cargos por API: código abierto\n",
    "2. Los datos no salen de su ordenador\n",
    "\n",
    "**Desventajas:**\n",
    "1. Tiene mucha menos potencia (parámetros) que el modelo Frontier\n",
    "\n",
    "## Resumen de la instalación de Ollama\n",
    "\n",
    "¡Simplemente visita [ollama.com](https://ollama.com) e instálalo!\n",
    "\n",
    "Una vez que hayas terminado, el servidor ollama ya debería estar ejecutándose localmente.\n",
    "Si entras en:\n",
    "[http://localhost:11434/](http://localhost:11434/)\n",
    "\n",
    "Debería ver el mensaje `Ollama se está ejecutando`.\n",
    "\n",
    "De lo contrario, abre una nueva Terminal (Mac) o Powershell (Windows) e introduce `ollama serve`.\n",
    "Luego, intenta entrar em [http://localhost:11434/](http://localhost:11434/) nuevamente."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "4e2a9393-7767-488e-a8bf-27c12dca35bd",
   "metadata": {},
   "outputs": [],
   "source": [
    "# imports\n",
    "\n",
    "import requests\n",
    "from bs4 import BeautifulSoup\n",
    "from IPython.display import Markdown, display"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "29ddd15d-a3c5-4f4e-a678-873f56162724",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Constantes\n",
    "\n",
    "OLLAMA_API = \"http://localhost:11434/api/chat\"\n",
    "HEADERS = {\"Content-Type\": \"application/json\"}\n",
    "MODEL = \"gemma3:1b\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "dac0a679-599c-441f-9bf2-ddc73d35b940",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Crea una lista de mensajes utilizando el mismo formato que usamos para OpenAI\n",
    "\n",
    "messages = [\n",
    "    {\"role\": \"user\", \"content\": \"Describe algunas de las aplicaciones comerciales de la IA generativa.\"}\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "7bb9c624-14f0-4945-a719-8ddb64f66f47",
   "metadata": {},
   "outputs": [],
   "source": [
    "payload = {\n",
    "        \"model\": MODEL,\n",
    "        \"messages\": messages,\n",
    "        \"stream\": False\n",
    "    }"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "42b9f644-522d-4e05-a691-56e7658c0ea9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "La IA generativa está revolucionando una amplia gama de industrias y aplicaciones comerciales. Aquí te presento un resumen de algunas de las más destacadas, categorizadas por área:\n",
      "\n",
      "**1. Marketing y Ventas:**\n",
      "\n",
      "* **Generación de contenido:**\n",
      "    * **Redacción de textos:** La IA genera descripciones de productos, publicaciones de blog, correos electrónicos de marketing, scripts de video, etc.  Esto ahorra tiempo y recursos al equipo de marketing.\n",
      "    * **Generación de imágenes y videos:** Crea imágenes, ilustraciones y videos de alta calidad a partir de descripciones textuales, lo que facilita la producción de contenido visual.\n",
      "    * **Personalización del contenido:** Crea mensajes y ofertas personalizadas en función de los datos del cliente.\n",
      "* **Chatbots y Asistentes Virtuales:**\n",
      "    * **Chatbots inteligentes:**  Crean experiencias de conversación más fluidas y conversacionales, mejorando la atención al cliente y la generación de leads.\n",
      "    * **Asistentes virtuales personalizados:**  Automatizan tareas repetitivas y brindan soporte técnico.\n",
      "* **Creación de Avatar:** Genera representaciones visuales de personas para campañas de marketing, social media, etc.\n",
      "* **Análisis de sentimientos:** Analiza el sentimiento en comentarios y reseñas online, ayudando a la compañía a comprender la opinión de los clientes.\n",
      "\n",
      "**2. Diseño y Desarrollo:**\n",
      "\n",
      "* **Diseño de productos:**\n",
      "    * **Generación de diseños:** Crea diseños de productos, productos de moda, interiores, y otros, basados en parámetros específicos, como el estilo, las dimensiones o los materiales.\n",
      "    * **Diseño de prototipos:**  Genera prototipos visuales rápidamente para probar nuevas ideas.\n",
      "* **Desarrollo de software:**\n",
      "    * **Generación de código:**  Escribe fragmentos de código, funciones o incluso aplicaciones completas a partir de descripciones en lenguaje natural.\n",
      "    * **Testeo y depuración:**  Identifica errores y problemas en el código automáticamente.\n",
      "* **Diseño de interfaces de usuario (UI):**  Crea layouts y diseños de interfaz de usuario más rápidamente con la asistencia de la IA.\n",
      "\n",
      "**3.  Industria de la Tecnología:**\n",
      "\n",
      "* **Desarrollo de software:**\n",
      "    * **Generación de pruebas unitarias:**  Automatiza la creación de pruebas para asegurar que el software funcione correctamente.\n",
      "    * **Generación de documentación:**  Crea documentación técnica, código de referencia y documentación de API.\n",
      "* **Inteligencia Artificial y Aprendizaje Automático (IA/ML):**\n",
      "    * **Modelos de Lenguaje de Modelado (LLM):**  Los LLM, como GPT-4, están siendo utilizados para crear herramientas de generación de contenido, chatbots, y asistente de escritura.\n",
      "    * **Generación de Datos Sintéticos:**  Crea datos artificiales para entrenar modelos de IA y pruebas, reduciendo costos y tiempos de desarrollo.\n",
      "* **Ciberseguridad:**\n",
      "    * **Generación de pruebas de penetración:** Crea simulaciones de ataques cibernéticos.\n",
      "* **Blockchain:** Generación de contratos inteligentes con características específicas.\n",
      "\n",
      "**4.  Industria de la Finanzas:**\n",
      "\n",
      "* **Generación de Reporte Financiero:** Crea reportes financieros automatizados con el menor esfuerzo.\n",
      "* **Detección de Fraude:**  Analiza datos para identificar patrones sospechosos y detectar posibles fraudes.\n",
      "* **Asesoramiento Financiero:** Crea informes personalizados y adaptados a los clientes.\n",
      "\n",
      "**5.  Industria de la Salud:**\n",
      "\n",
      "* **Descubrimiento de fármacos:** Genera candidatos a fármacos, optimiza moléculas y predecir sus propiedades.\n",
      "* **Asistencia al diagnóstico:**  Analiza imágenes médicas (rayos X, resonancia magnética) para detectar anomalías y apoyar el diagnóstico.\n",
      "* **Personalización de la atención al paciente:** Genera planes de tratamiento personalizados.\n",
      "\n",
      "**6.  Entretenimiento:**\n",
      "\n",
      "* **Creación de música:** Genera melodías y letras.\n",
      "* **Generación de arte:** Crea imágenes, ilustraciones y videos.\n",
      "* **Creación de videojuegos:** Genera niveles, personajes y escenarios.\n",
      "\n",
      "**Ejemplos concretos de uso actual:**\n",
      "\n",
      "* **Jasper:**  Herramienta de escritura que utiliza IA generativa para generar artículos de blog, descripciones de productos y contenido de marketing.\n",
      "* **Copy.ai:**  Aplica IA para generar contenido de marketing que incluye texto, imágenes y videos.\n",
      "* **Stability AI:**  Ofrece herramientas de generación de imágenes, incluyendo Stable Diffusion, que permite crear imágenes realistas.\n",
      "\n",
      "**Consideraciones importantes:**\n",
      "\n",
      "* **Calidad:** La calidad de la IA generativa puede variar.  Es importante revisar y editar el contenido generado.\n",
      "* **Ética:** Es crucial abordar cuestiones éticas, como el plagio, la desinformación y la privacidad.\n",
      "* **Sesgo:** Los modelos de IA pueden heredar sesgos de los datos con los que fueron entrenados.\n",
      "\n",
      "La IA generativa está en constante evolución, y con el tiempo, estas aplicaciones se expandirán aún más, transformando la forma en que trabajamos y hacemos negocios.\n",
      "\n",
      "Para obtener más información sobre una aplicación específica, te recomiendo buscar en Google: \"AI Generative [Aplicación Específica]\".\n",
      "\n"
     ]
    }
   ],
   "source": [
    "response = requests.post(OLLAMA_API, json=payload, headers=HEADERS)\n",
    "print(response.json()['message']['content'])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6a021f13-d6a1-4b96-8e18-4eae49d876fe",
   "metadata": {},
   "source": [
    "# Presentación del paquete ollama\n",
    "\n",
    "Ahora haremos lo mismo, pero utilizando el elegante paquete de Python ollama en lugar de una llamada HTTP directa.\n",
    "\n",
    "En esencia, se realiza la misma llamada que se indicó anteriormente al servidor ollama que se ejecuta en localhost:11434"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "7745b9c4-57dc-4867-9180-61fa5db55eb8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "La IA generativa ha avanzado a un ritmo vertiginoso y está abriendo un abanico de aplicaciones comerciales en diversos sectores. Aquí te presento algunas de las más destacadas, divididas por áreas:\n",
      "\n",
      "**1. Marketing y Ventas:**\n",
      "\n",
      "* **Generación de contenido:**\n",
      "    * **Textos:** Crea contenido de marketing (descripciones de productos, publicaciones para redes sociales, correos electrónicos, artículos de blog, etc.) a partir de una simple descripción inicial.\n",
      "    * **Imágenes y vídeos:** Genera imágenes, vídeos cortos, elementos visuales y animaciones para campañas publicitarias y marketing.\n",
      "    * **Guiones:** Crea guiones para vídeos y anuncios.\n",
      "* **Personalización del marketing:**  Diseña e-mails, mensajes y experiencias personalizadas para segmentos específicos de clientes, optimizando la efectividad de las campañas.\n",
      "* **Generación de scripts:** Crea scripts para vídeos explicativos, vídeos de testimonios y otros contenidos promocionales.\n",
      "* **Creación de Avatar y personajes:** Desarrolla personajes y representaciones visuales para campañas publicitarias y marketing digital.\n",
      "* **Análisis de Sentimientos:** Analiza comentarios de clientes y redes sociales para comprender las emociones y el sentimiento hacia la marca.\n",
      "\n",
      "**2. Diseño y Producción:**\n",
      "\n",
      "* **Diseño gráfico:** Genera diseños de logos, ilustraciones, banner y otros materiales de marketing visualmente atractivos a partir de descripciones textuales o ejemplos.\n",
      "* **Diseño de productos:** Crea diseños de prototipos de productos, incluyendo modelos 3D, patrones y elementos visuales.\n",
      "* **Diseño de videojuegos:** Genera assets visuales (personajes, entornos, objetos) de forma rápida y eficiente, facilitando la producción de juegos.\n",
      "* **Diseño de moda:** Sugiere diseños de ropa, patrones y prendas, basándose en tendencias y preferencias.\n",
      "* **Diseño de interiores:** Genera diseños de interiores y espacios, considerando estética, funcionalidad y presupuesto.\n",
      "* **Diseño de productos de software:** Genera código de software básico, componentes y documentación.\n",
      "\n",
      "**3. Desarrollo de Software y Tecnología:**\n",
      "\n",
      "* **Generación de código:**\n",
      "    * **Automatización de la escritura de código:**  La IA generativa puede generar fragmentos de código, funciones y clases a partir de descripciones en lenguaje natural.\n",
      "    * **Refactorización de código:** Mejora la legibilidad, el rendimiento y la mantenibilidad del código existente.\n",
      "* **Desarrollo de APIs:** Crea APIs que automatizan tareas y proporcionen funcionalidades a otros desarrolladores.\n",
      "* **Generación de pruebas automatizadas:** Genera casos de prueba a partir de requisitos de software.\n",
      "* **Generación de documentación:** Crea documentación de código, APIs y procedimientos.\n",
      "* **Inteligencia Artificial para Desarrollo de Software:**  Ayuda a los desarrolladores a tomar decisiones rápidas sobre la arquitectura, el diseño o el código, basándose en los datos y la lógica de negocio.\n",
      "\n",
      "**4. Salud y Bienestar:**\n",
      "\n",
      "* **Descubrimiento de fármacos:**  Genera compuestos químicos con propiedades específicas para la investigación farmacéutica.\n",
      "* **Diseño de tratamientos:** Sugiere tratamientos personalizados basados en el historial del paciente.\n",
      "* **Creación de simulación médica:**  Genera datos de simulación para probar nuevos modelos médicos y terapias.\n",
      "* **Asistencia en la interpretación de imágenes médicas:** Analiza imágenes de resonancia magnética (RM) o tomografías computarizadas (TC) para detectar anomalías y ayudar al diagnóstico.\n",
      "* **Generación de planes de ejercicios personalizados:** Creación de planes de entrenamiento y ejercicios basados en el estado físico y las metas del usuario.\n",
      "\n",
      "**5. Legal y Administración:**\n",
      "\n",
      "* **Redacción de contratos:** Genera borradores de contratos y documentos legales.\n",
      "* **Análisis legal:**  Analiza documentos legales, identifica cláusulas importantes y genera resúmenes.\n",
      "* **Preparación de documentación legal:**  Automatiza la preparación de documentos legales, como peticiones y formularios.\n",
      "* **Gestión de la documentación:**  Genera resúmenes y extractos de documentos legales.\n",
      "\n",
      "**6. Entretenimiento y Medios:**\n",
      "\n",
      "* **Generación de música:** Crea música original en diferentes estilos.\n",
      "* **Creación de arte digital:** Genera imágenes, ilustraciones y videos artísticos.\n",
      "* **Generación de texto narrativo:** Crea historias, poemas o cuentos.\n",
      "* **Creación de personajes de videojuegos:** Crea personajes complejos y con backstory.\n",
      "* **Creación de efectos visuales para videojuegos:**  Generar texturas, efectos de luz y animaciones realistas.\n",
      "\n",
      "**Consideraciones Importantes:**\n",
      "\n",
      "* **Calidad de la Generación:** La calidad de la IA generativa depende de la calidad de los datos de entrenamiento y la complejidad de la tarea.\n",
      "* **Sesgo:** La IA generativa puede reflejar los sesgos presentes en los datos de entrenamiento.\n",
      "* **Ética:** Es importante considerar las implicaciones éticas de su uso, especialmente en áreas como la creación de contenido o la toma de decisiones.\n",
      "* **Originalidad:** La IA generativa genera contenido, por lo que la originalidad y la propiedad intelectual son importantes.\n",
      "\n",
      "**En resumen, la IA generativa está transformando la forma en que las empresas abordan una amplia gama de industrias, impulsando la innovación, la eficiencia y la creatividad.**\n",
      "\n",
      "¿Te gustaría explorar alguna de estas aplicaciones en más detalle, o quizás te interese saber sobre un sector específico donde la IA generativa está teniendo un impacto notable?\n"
     ]
    }
   ],
   "source": [
    "import ollama\n",
    "\n",
    "response = ollama.chat(model=MODEL, messages=messages)\n",
    "print(response['message']['content'])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d8a65815",
   "metadata": {},
   "source": [
    "# AHORA el ejercicio para ti\n",
    "\n",
    "Toma el código del día 1 e incorpóralo aquí para crear un resumidor de sitios web que use Llama 3.2 ejecutándose localmente en lugar de OpenAI"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "9a611b05-b5b0-4c83-b82d-b3a39ffb917d",
   "metadata": {},
   "outputs": [],
   "source": [
    "import ollama\n",
    "\n",
    "MODEL = \"gemma3:1b\"\n",
    "\n",
    "\n",
    "class Website:\n",
    "    def __init__(self, url):\n",
    "        self.url=url\n",
    "        response = requests.get(url)\n",
    "        soup = BeautifulSoup(response.content, 'html.parser')\n",
    "        self.title = soup.title.string if soup.title else \"No tiene título\"\n",
    "        for irrelevant in soup.body([\"script\", \"style\", \"img\", \"input\"]):\n",
    "            irrelevant.decompose()\n",
    "        self.text = soup.body.get_text(separator=\"\\n\", strip=True)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "292ed29a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "Okay, here’s a brief summary of the provided text, suitable for a quick understanding:\n",
       "\n",
       "Anthropic is developing AI agents – systems that can autonomously operate and complete complex tasks – through a series of principles and design choices focused on simplicity, transparency, and human oversight. The text outlines a process of building these agents, starting with simple prompts and gradually incorporating more sophisticated tools and frameworks. Key areas of focus include:  understanding the nuances of agent-computer interfaces (ACI), managing tool-specific error handling, and prioritizing clear documentation and testing.  The document emphasizes best practices for tool development, including careful parameterization and defining clear boundaries, as well as the importance of creating trust-worthy agent-computer interfaces.  Finally, it highlights key design choices for building robust and reliable AI agents, including integrating feedback loops and careful consideration of risk and complexity, all while emphasizing the importance of continuous learning and iteration."
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "system_prompt = \"Eres un asistente que analiza el contenido de un sitio web \\\n",
    " y proporciona un breve resumen, ignorando el texto que podría estar relacionado con la navegación. \\\n",
    "Responder en Markdown.\"\n",
    "\n",
    "def user_prompt_for(website):\n",
    "    user_prompt = f\"Estás viendo un sitio web titulado {website.title}\"\n",
    "    user_prompt += \"\\nEl contenido de este sitio web es el siguiente; \\\n",
    "    proporciona un breve resumen de este sitio web en formato Markdown. \\\n",
    "    Si el contenido no está en español, traduce el resumen automáticamente al español.\\n\\n\"\n",
    "    user_prompt += website.text\n",
    "    return user_prompt\n",
    "\n",
    "def messages_for(website):\n",
    "    return [\n",
    "        {\"role\": \"system\", \"content\": system_prompt},\n",
    "        {\"role\": \"user\", \"content\": user_prompt_for(website)}\n",
    "    ]\n",
    "\n",
    "\n",
    "def summarize(url):\n",
    "    website = Website(url)\n",
    "    messages = messages_for(website)\n",
    "    response = ollama.chat(model=MODEL, messages=messages)\n",
    "    return response['message']['content']\n",
    "\n",
    "\n",
    "def display_summary(url):\n",
    "    summary = summarize(url)\n",
    "    display(Markdown(summary))\n",
    "\n",
    "display_summary(\"https://www.anthropic.com/engineering/building-effective-agents\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4fd1d4f4",
   "metadata": {},
   "source": [
    "# Contribution: Modo batch y traduccion a español"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "45e73875",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Nuevo: Modo batch\n",
    "\n",
    "def batch_summarize(urls):\n",
    "    \"\"\"\n",
    "    Procesa multiples urls y devuelve un diccionario {url: resumen}.\n",
    "    Traduce a español si es necesario.\n",
    "    \"\"\"\n",
    "    summaries = {}\n",
    "    for url in urls:\n",
    "        try:\n",
    "            summaries[url] = summarize(url)\n",
    "        except Exception as e:\n",
    "            summaries[url] = f\"Error al procesar {url}: {e}\"\n",
    "    return summaries\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "4a3d6881-35af-469e-a8ff-a8b62b721d95",
   "metadata": {},
   "outputs": [],
   "source": [
    "urls = [\n",
    "    \"https://ir.uitm.edu.my/id/eprint/29153/\",\n",
    "    \"https://www.worldvaluessurvey.org/wvs.jsp\",\n",
    "    \"https://www.wonderfulcopenhagen.com/cll\",\n",
    "    \"https://www.bellingcat.com\"\n",
    "]\n",
    "\n",
    "def display_summaries(urls):\n",
    "    summaries = batch_summarize(urls)\n",
    "    for url, summary in summaries.items():\n",
    "        text = f\"\"\"\n",
    "### [{url}]({url})\n",
    "\n",
    "{summary}\n",
    "\n",
    "---\n",
    "\"\"\"\n",
    "        display(Markdown(text))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "da01aa6a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "\n",
       "### [https://ir.uitm.edu.my/id/eprint/29153/](https://ir.uitm.edu.my/id/eprint/29153/)\n",
       "\n",
       "El resumen de la publicación \"Key success factors toward MICE industry: A systematic literature review / Muhammad Saufi Anas ... [et al.]\" (JTHCA, 2020) es el siguiente:\n",
       "\n",
       "La publicación investiga los factores críticos que contribuyen al éxito de la industria MICE. El trabajo realiza una revisión sistemática de literatura sobre 39 publicaciones sobre este tema, evaluando las estrategias de las empresas que operan en este sector.  Los hallazgos revelan que factores como la motivación de los viajeros de negocios, la percepción sobre la industria, la motivación de los asistentes a eventos y la importancia de los indicadores clave de rendimiento, la satisfacción de los asistentes y las estrategias de marketing, las tendencias tecnológicas y los desafíos enfrentados por la industria son cruciales. El estudio identifica la importancia de la sostenibilidad de la industria.  El trabajo ofrece información útil para comprender las estrategias de desarrollo de la industria, los indicadores clave de éxito, los desafíos y las formas de impulsar la sostenibilidad de la industria MICE.\n",
       "\n",
       "\n",
       "---\n"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/markdown": [
       "\n",
       "### [https://www.worldvaluessurvey.org/wvs.jsp](https://www.worldvaluessurvey.org/wvs.jsp)\n",
       "\n",
       "Okay, here’s a summary of the WVS Database content, formatted as Markdown:\n",
       "\n",
       "**The World Values Survey (WVS) Database Summary**\n",
       "\n",
       "The WVS Database is a comprehensive resource documenting the findings of the Ronald F. Inglehart Best Book Award on Political Culture and Values, focusing on comparative cross-cultural research. It provides details on:\n",
       "\n",
       "*   **The Award Process:**  Details about the award criteria, nominations, and selection process for the 2025 award.\n",
       "*   **Recent Webinars:**  A detailed timeline of recent webinars, including:\n",
       "    *   **July 15th:**  Discussion of Autocratic Modernity and Psychological Cracks in a Dystopian Model.\n",
       "    *   **June 27th:** Global Attitudes Toward Abortion: Insights from the World Values Survey.\n",
       "    *   **June 18th:** Ideological Extremism and Polarization on a Global Scale.\n",
       "    *   **April 25th:** Elite-Citizen Gap in International Organization Legitimacy.\n",
       "    *   **April 08th:**  The Persistence of Traditional Values and the Limited Global Appeal of Democracy.\n",
       "    *   **March 25th:**  Predicting Homonegativity in Southeast Asian Countries – Using Survey Data.\n",
       "    *   **May 20th:**  Measuring National Parochialism and Explaining its Individual Variations Using Survey Data.\n",
       "*   **Ongoing Research & Events:** Information on ongoing research projects and events hosted by the WVSA, including:\n",
       "    *   **Social Networks:**  A Twitter feed highlighting discussions about the WVS research.\n",
       "    *   **Latest News & Events:** A calendar of events and news updates.\n",
       "    *   **Events:**  Details of the WVSA’s secretariat and headquarters – Christian Haerpfer, Christian Diaz-Medrano, and Jaime Diez-Medrano.\n",
       "    *   **Data Archive:**  Information about the database's archival materials.\n",
       "\n",
       "The database primarily centers around the research and analysis generated by the Ronald F. Inglehart Best Book Award, exploring comparative cross-cultural phenomena and political attitudes.\n",
       "\n",
       "---\n",
       "\n",
       "Would you like me to elaborate on any specific section or aspect of the database content?\n",
       "\n",
       "---\n"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/markdown": [
       "\n",
       "### [https://www.wonderfulcopenhagen.com/cll](https://www.wonderfulcopenhagen.com/cll)\n",
       "\n",
       "El Copenhagen Legacy Lab es un proyecto de la organización Wonderful Copenhagen que se centra en impulsar el impacto a largo plazo de las conferencias y eventos.  El laboratorio, impulsado por una investigación doctoral, ha desarrollado un marco de legado basado en datos y experiencia, y ha recibido varios reconocimientos, incluyendo el “2024 GDS-Movement” y el “#MEET4IMPACT” Impact Award.  El objetivo principal es apoyar a las asociaciones internacionales en alcanzar sus objetivos estratégicos, al mismo tiempo que respaldan las prioridades nacionales y las fortalezas locales para generar valor social a nivel local y global.  El laboratorio ofrece servicios gratuitos, pero la participación y los recursos deben priorizarse por parte de las asociaciones y/o los hostes.  En esencia, el lab busca facilitar la colaboración entre asociaciones internacionales y partes interesadas locales, identificando intereses comunes y delineando acciones concretas para el legado de los eventos.  El sitio web proporciona testimonios de asociaciones que han utilizado la iniciativa, y ofrece enlaces a la página de la Convention Bureau, la página de la Card de Copenhague y la página de Wonderful Copenhagen.\n",
       "\n",
       "---\n"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/markdown": [
       "\n",
       "### [https://www.bellingcat.com](https://www.bellingcat.com)\n",
       "\n",
       "Okay, here's a Markdown summary of the Bellingcat website, focusing on the core information presented:\n",
       "\n",
       "**Bellingcat Overview:**\n",
       "\n",
       "Bellingcat is an online investigative journalism organization dedicated to uncovering wrongdoing and holding power accountable.  They focus on investigations related to:\n",
       "\n",
       "*   **Ukraine:**  Specifically, tracking traffic stops involving delivery riders and workers, investigations related to immigration, and analyzing misinformation campaigns.\n",
       "*   **Conflict:**  Focuses on analyzing events and data related to conflict zones, particularly in Ukraine and surrounding regions.\n",
       "*   **China:** Investigating potential connections between Chinese fentanyl smuggling networks and Japan.\n",
       "*   **Global Affairs:**  Covers a wide range of global issues, including misinformation, legal accountability, and geopolitical investigations.\n",
       "\n",
       "**Key Activities & Features:**\n",
       "\n",
       "*   **Investigations:**  They publish detailed investigations, including data analysis, geospatial mapping, and source material.\n",
       "*   **Guides:** Provides accessible resources to help researchers and journalists with open-source investigation techniques.\n",
       "*   **Workshops:** Offers online training workshops on open-source tools and techniques.\n",
       "*   **Community:** Encourages collaboration through Discord and other platforms.\n",
       "*   **Tools:**  Offers open-source tools for researchers to utilize.\n",
       "*   **Newsletter:**  Delivers timely content and updates.\n",
       "*   **Collaboration:**  Facilitates a global community of researchers and journalists.\n",
       "*   **Data Journalism:**  Focuses on visualising data and uncovering stories.\n",
       "\n",
       "**Recent Highlights:**\n",
       "\n",
       "*   Discovered a key administrator behind an AI porn site.\n",
       "*   Confirmed a Dutch political party’s involvement in calling for Canada’s extradition.\n",
       "*   Won the AI Neuharth Innovation Award.\n",
       "\n",
       "**Overall Purpose:**\n",
       "\n",
       "Bellingcat aims to empower investigative journalism and transparency by providing resources, tools, and a collaborative community for uncovering wrongdoing and holding power accountable, particularly in politically sensitive areas like Ukraine and China.\n",
       "\n",
       "---\n",
       "\n",
       "Let me know if you'd like me to elaborate on any specific aspect or provide a more detailed breakdown!\n",
       "\n",
       "---\n"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display_summaries(urls)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7f268c86",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
